package com.lanyou.esb.cook.proxy.service;

import java.util.Date;

import redis.clients.jedis.exceptions.JedisException;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.lanyou.esb.cook.proxy.entity.IfAlrReqTimes;
import com.lanyou.esb.cook.proxy.meta.TimeUnit;

/**
 * 接口已请求次数服务接口
 * 
 * @author Davey.wu
 */
public interface IfAlrReqTimesService {

	/**
	 * 获取接口已请求次数信息
	 * 
	 * @param ifId
	 *            ：接口标识
	 * @param unit
	 *            ：请求时间单位（年，月，日，时，分，秒等）
	 * @param callSystemCode
	 *            ：调用方系统编码
	 * @param requestDate
	 *            ：请求时间
	 * @return
	 */
	IfAlrReqTimes get(String ifId, TimeUnit unit, String callSystemCode,
			Date requestDate);

	/**
	 * 创建对象
	 * 
	 * @param ifId
	 *            ：接口标识
	 * @param unit
	 *            ：请求时间单位（年，月，日，时，分，秒等）
	 * @param callSystemCode
	 *            ：调用方系统编码
	 * @param requestDate
	 *            ：请求时间
	 * @return
	 * @throws JsonProcessingException
	 * @throws JedisException
	 */
	IfAlrReqTimes create(String ifId, TimeUnit unit, String callSystemCode,
			Date requestDate) throws JedisException, JsonProcessingException;

	/**
	 * 将接口已请求次数信息保存至redis
	 * 
	 * @param ifAlrReqTimes
	 *            :接口已请求次数
	 */
	void pushToRedis(IfAlrReqTimes ifAlrReqTimes);
}
